import { NextRequest, NextResponse } from 'next/server';
import { query } from '@/lib/sqlite_db';

export async function POST(req: NextRequest) {
  try {
    const data = await req.json();
    const configEntries = Object.entries(data);

    for (const [key, value] of configEntries) {
      // 检查key是否在允许的列表中
      const validKeys = [
        'form_summary_system',
        'form_summary_user',
        'form_full_system',
        'form_full_user',
        'code_summary_system',
        'code_summary_user',
        'code_full_system',
        'code_full_user',
        'document_summary_system',
        'document_summary_user',
        'document_full_system',
        'document_full_user',
      ];

      if (!validKeys.includes(key)) {
        continue;
      }

      // 如果值是字符串，直接保存，否则转为JSON字符串
      const configValue = typeof value === 'string' ? value : JSON.stringify(value);

      // 检查是否已存在该配置
      const checkSql = `SELECT * FROM admin_config WHERE config_key = ?`;
      const existingConfig = await query(checkSql, [key]);

      if (existingConfig && existingConfig.length > 0) {
        // 更新现有配置
        const updateSql = `
          UPDATE admin_config
          SET config_value = ?
          WHERE config_key = ?
        `;
        await query(updateSql, [configValue, key]);
      } else {
        // 创建新配置
        const insertSql = `
          INSERT INTO admin_config (config_key, config_value)
          VALUES (?, ?)
        `;
        await query(insertSql, [key, configValue]);
      }
    }

    return NextResponse.json({
      success: true,
      message: '提示词模板保存成功',
    });
  } catch (error) {
    console.error('保存提示词模板失败:', error);
    return NextResponse.json({
      success: false,
      message: '保存模板失败',
      error: String(error),
    }, {
      status: 500,
    });
  }
}

export async function GET() {
  const defaultPrompts = {
    form_summary_system: '你是软件著作权登记专家。请根据用户提供的软件信息，生成一份符合中国版权保护中心要求的登记申请表摘要。摘要需要包含软件名称、版本号、开发完成日期、首次发表日期、软件开发情况、功能特点、技术特点、硬件环境、软件环境等内容。',
    form_summary_user: '请根据以下信息生成登记申请表摘要：软件名称：{description}，版本号：请填写版本号，开发完成日期：请填写开发完成日期，首次发表日期：请填写首次发表日期，软件开发情况：请描述软件开发情况，功能特点：请描述软件功能特点，技术特点：请描述技术特点。',
    form_full_system: '你是软件著作权材料生成专家。请根据下面的摘要，生成完整版本内容，补全格式（页眉页脚、页码）、规范页数、行数、不少于每页要求，并符合登记提交要求。',
    form_full_user: '摘要内容：{summary}',
    code_summary_system: '你是软件源代码材料撰写专家。请根据用户提供的源代码信息，生成一份符合中国版权保护中心要求的源程序摘要。摘要需要包含软件功能模块、主要算法、数据结构、接口设计、技术架构、开发工具、编程语言、代码规模等信息。',
    code_summary_user: '请根据以下信息生成源程序摘要：软件名称：{description}，开发语言：{language}，版本：{version}，主要功能模块：请描述主要功能模块，技术架构：请描述技术架构。',
    code_full_system: '你是软件著作权材料生成专家。请根据下面的摘要，生成完整版本内容，补全格式（页眉页脚、页码）、规范页数、行数、不少于每页要求，并符合登记提交要求。',
    code_full_user: '摘要内容：{summary}',
    document_summary_system: '你是软件说明文档撰写专家。请根据用户提供的软件信息，生成一份符合中国版权保护中心要求的说明文档摘要。摘要需要包含软件概述、功能说明、操作流程、技术特点、使用环境、用户界面等内容。',
    document_summary_user: '请根据以下信息生成说明文档摘要：软件名称：{description}，开发语言：{language}，版本：{version}，软件概述：请描述软件概述，主要功能：请描述主要功能。',
    document_full_system: '你是软件著作权材料生成专家。请根据下面的摘要，生成完整版本内容，补全格式（页眉页脚、页码）、规范页数、行数、不少于每页要求，并符合登记提交要求。',
    document_full_user: '摘要内容：{summary}',
  };

  try {
    const sql = `
      SELECT config_key, config_value
      FROM admin_config
      WHERE config_key IN (
        'form_summary_system',
        'form_summary_user',
        'form_full_system',
        'form_full_user',
        'code_summary_system',
        'code_summary_user',
        'code_full_system',
        'code_full_user',
        'document_summary_system',
        'document_summary_user',
        'document_full_system',
        'document_full_user'
      )
    `;
    const configs = await query(sql);

    const result = { ...defaultPrompts };

    configs.forEach(config => {
      try {
        result[config.config_key] = JSON.parse(config.config_value);
      } catch (error) {
        result[config.config_key] = config.config_value;
      }
    });

    return NextResponse.json({ data: result });
  } catch (error) {
    console.error('获取提示词模板失败:', error);
    return NextResponse.json({ data: defaultPrompts, error: '获取模板失败' }, { status: 500 });
  }
}